/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.CapaFisica;
import fisica.TutorFisica;
import hibernate.objeto.Paciente;
import hibernate.objeto.Persona;
import hibernate.objeto.Tutor;
import presentacion.CapaPresentacion;

/**
 *
 * @author Gonzalo
 */
public class TutorLogica extends CapaLogica {

    /**
     * Crea y persiste la persona de contacto para el paciente.
     *
     * @param datosPaciente Los datos del paciente
     * @param idTutor El arreglo en donde se guarda el id del objeto
     * Tutor creado para su posterior recuperación
     * @return true si se agregó/modificó correctamente, false en caso contrario
     */
    public static boolean agregarOModificarTutor(
            Object[] datosPaciente, int[] idTutor) {
        //Crea el objeto
        Tutor tutor = crearUObtenerObjetoTutor(datosPaciente);

        //Persiste el objeto
        if (CapaFisica.guardarOActualizarObjeto(tutor)) {
            idTutor[0] = tutor.getIdTutor();
            return true;
        } else {
            return false;
        }
    }

    /**
     * Actualiza un tutor
     *
     * @param datosActualizacion La actualización del tutor
     * @return true si se reasignó correctamente, false en caso contrario
     */
    public static boolean actualizarTutor(Object[] datosActualizacion) {
        //Modifica el arreglo para poder reutilizar código
        Object[] datosPaciente = new Object[24];
        datosPaciente[PERSONA_TIPO_DE_DOCUMENTO] =
                ((Paciente)datosActualizacion[
                REASIGNACION_CONTACTO_OBJETO_PACIENTE]).getPersona().
                getTipoDeDocumentoPersona();
        datosPaciente[PERSONA_NUMERO_DE_DOCUMENTO] =
                ((Paciente)datosActualizacion[
                REASIGNACION_CONTACTO_OBJETO_PACIENTE]).getPersona().
                getNumeroDeDocumentoPersona();
        datosPaciente[PACIENTE_TUTOR] = PersonaLogica.
                getPersonaPorIdYEnBd(((Persona)datosActualizacion[
                REASIGNACION_CONTACTO_OBJETO_TUTOR]).getIdPersona());

        Tutor tutor = crearUObtenerObjetoTutor(datosPaciente);

        if (CapaFisica.guardarOActualizarObjeto(tutor)) {
            return true;
        } else {
            return false;
        }
    }    

    /**
     * Crea/modifica un objeto tutor con los datos pasados por parámetro.
     *
     * @param datosPaciente Los datos del paciente
     * @return El objeto Tutor recien creado
     */
    private static Tutor crearUObtenerObjetoTutor(Object[] datosPaciente){
        Tutor tutor = null;
        Paciente pacienteTemp =
                PacienteLogica.getPacientePorDocumento(
                datosPaciente[PERSONA_TIPO_DE_DOCUMENTO].toString(),
                datosPaciente[PERSONA_NUMERO_DE_DOCUMENTO].toString());
        if (pacienteTemp != null) {
            tutor = pacienteTemp.getTutor();
        }

        //Si el paciente no tiene persona de contacto, le creo
        if (tutor == null) {
            tutor = new Tutor();
        }

        Persona persona = PersonaLogica.getPersonaPorIdYEnBd(
                ((Persona) (datosPaciente[
                CapaLogica.PACIENTE_TUTOR])).getIdPersona());

        tutor.setPersona(persona);
            
        return tutor;
    }

    /**
     * Retorna el objeto Tutor según el id.
     *
     * @param idTutor El id del tutor
     * @return El objeto Tutor consultado, null si no existe
     */
    public static Tutor getTutorPorId(int idTutor) {
        return TutorFisica.getTutorPorId(idTutor);
    }

    /**
     * Comprueba si existe la persona como tutor.
     *
     * @param persona La persona consultada
     * @return true si existe, false en caso contrario
     */
    public static boolean esTutor(Persona persona) {
        return (TutorFisica.getTutorPorIdPersona(persona.getIdPersona())
                != null);
    }

    /**
     * Retorna el texto HTML correspondiente a la descripcion del persona.
     *
     * @param tutor El tutor
     * @return El String que contiene el HTML
     */
    public static String getTutorHTML(Tutor tutor) {
        String tutorHTML = "";
        if (tutor != null) {
            tutorHTML =
                    "<font size=\"3\" face=\"arial\" color=\"blue\">TUTOR</font><br> " +
                    PersonaLogica.getPersonaHTML(tutor.getPersona());
        } else {
            tutorHTML = "<font size=\"3\" face=\"arial\" color=\"blue\">TUTOR</font><br> " +
                    "<font size=\"3\" face=\"arial\">No posee</font><br></font>";
        }
        
        return tutorHTML;
    }
    
}
